package cn.net.cfss.fgbp.provider.console.spi;

import cn.net.cfss.fgbp.api.console.constant.DeleteFlagEnum;
import cn.net.cfss.fgbp.api.console.dto.SysUserLoginLogDto;
import cn.net.cfss.fgbp.api.console.inte.ISysUserLoginLogService;
import cn.net.cfss.fgbp.base.page.PageData;
import cn.net.cfss.fgbp.provider.console.biz.SysUserLoginLogDtoBiz;
import cn.net.cfss.fgbp.provider.console.utils.EntityUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;

@RestController
@Slf4j
public class SysUserLoginLogSpi implements ISysUserLoginLogService {

    @Autowired
    SysUserLoginLogDtoBiz sysUserLoginLogDtoBiz;

    /**
     * 保存登录/登出日志
     *
     * @param sysUserLoginLogDto
     * @return
     */
    @Override
    public SysUserLoginLogDto saveLog(SysUserLoginLogDto sysUserLoginLogDto) {
        SysUserLoginLogDto req = sysUserLoginLogDto;

        sysUserLoginLogDto.setId(sysUserLoginLogDtoBiz.getUID());
        sysUserLoginLogDto.setCreateTime(new Date());
        sysUserLoginLogDto.setDeleteFlag(DeleteFlagEnum.NOT_DEL);
        sysUserLoginLogDtoBiz.insertSelective(sysUserLoginLogDto);

        log.info("请求参数:{}，返回参数：{}", req, sysUserLoginLogDto);
        return sysUserLoginLogDto;
    }

    /**
     * 根据ID查询用户登录/登出日志
     *
     * @param loginLogId
     * @return
     */
    @Override
    public SysUserLoginLogDto get(Long loginLogId) {

        SysUserLoginLogDto dto = sysUserLoginLogDtoBiz.selectById(loginLogId);

        log.info("请求参数:{}，返回参数：{}", loginLogId, dto);

        return dto;
    }

    /**
     * 分页查询用户登录日志
     *
     * @param page
     * @return
     */
    @Override
    public PageData<SysUserLoginLogDto> queryByPage(PageData<SysUserLoginLogDto> page) {
        PageData<SysUserLoginLogDto> req = page;

        PageHelper.startPage(page.getPageNum(), page.getPageSize());
        SysUserLoginLogDto search = page.getSearch();

        SysUserLoginLogDto dto = new SysUserLoginLogDto();
        BeanUtils.copyProperties(search, dto, EntityUtil.getNullPropertyNames(search));
        dto.setDeleteFlag(DeleteFlagEnum.NOT_DEL);
        List<SysUserLoginLogDto> list = sysUserLoginLogDtoBiz.queryList(dto);

        Page<SysUserLoginLogDto> pageInfo = (Page<SysUserLoginLogDto>) list;
        page.setRows(list);
        page.setTotal(pageInfo.getTotal());

        log.info("请求参数:{}，返回参数：{}", req, page);

        return page;
    }

}
